package cn.cxq.learning.array;

/**
 * 链接：https://www.nowcoder.com/questionTerminal/ef1f53ef31ca408cada5093c8780f44b?toCommentId=9153702
 * 来源：牛客网
 *
 * [编程题]调整数组顺序使奇数位于偶数前面
 * 热度指数：28875时间限制：C/C++ 1秒，其他语言2秒空间限制：C/C++ 256M，其他语言512M
 * 算法知识视频讲解
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有的奇数位于数组的前半部分，所有的偶数位于数组的后半部分，并保证奇数和奇数，偶数和偶数之间的相对位置不变。
 * 示例1
 * 输入
 * [1,2,3,4]
 * 输出
 * [1,3,2,4]
 * 示例2
 * 输入
 * [2,4,6,5,7]
 * 输出
 * [5,7,2,4,6]
 */
public class ReOrderArray {

    //很简单的两遍遍历，结果却很慢。。还好过了
    public int[] reOrderArray (int[] array) {

        int count = 0;

        for (int i = 0; i < array.length; i++) {
            if (array[i]%2 == 1) {
                count ++;
            }
        }

        int[] result = new int[array.length];
        int sig = 0;
        int dou = count;
        for (int i = 0; i < array.length; i++) {
            if (array[i]%2 == 1) {
                result[sig++] = array[i];
            } else {
                result[dou++] = array[i];
            }
        }

        return result;
    }
}
